package cn.tedu.csmall.passport.service;

import cn.tedu.csmall.commons.pojo.vo.PageData;
import cn.tedu.csmall.passport.pojo.dto.AdminLoginInfoDTO;
import cn.tedu.csmall.passport.pojo.param.AdminAddNewParam;
import cn.tedu.csmall.passport.pojo.param.AdminLoginInfoParam;
import cn.tedu.csmall.passport.pojo.param.AdminUpdateInfoParam;
import cn.tedu.csmall.passport.pojo.vo.AdminListItemVO;
import cn.tedu.csmall.passport.pojo.vo.AdminStandardVO;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletRequest;

@Transactional
public interface AdminService {

    /**
     * 请求头：授权信息
     */
    String HEADER_AUTHORIZATION = "Authorization";

    /**
     * 请求头：客户端浏览器
     */
    String HEADER_USER_AGENT = "User-Agent";

    /**
     * 管理员登录
     * @param adminLoginInfoParam
     * @return 此管理员信息对应的JWT数据
     */
    AdminLoginInfoDTO login(AdminLoginInfoParam adminLoginInfoParam, String remoteAddr, String userAgent);

    /**
     * 管理员退出登录
     * @param jwt
     */
    void logout(String jwt);

    /**
     * 添加管理员
     * @param adminAddNewParam
     */
    void addNew(AdminAddNewParam adminAddNewParam);

    PageData<AdminListItemVO> list(Integer pageNum, Integer pageSize);

    PageData<AdminListItemVO> list(Integer pageNum);

    void deleteById(Long adminId);

    void updateInfoById(Long id, AdminUpdateInfoParam adminUpdateInfoParam);

    AdminStandardVO getStandardById(Long id);

    void updatePwdById(Long id, String pwd);

    void setEnable(Long id, Integer enable);
}
